home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / ungepackte_daten / 1994 / 8 / 05 / term-4.0-source.lha / FastMacroPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-26  |  18.9 KB  |  845 lines

  1. /*
  2. **    FastMacroPanel.c
  3. **
  4. **    Editing panel for fast! macros
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_LIST,GAD_MACRO,GAD_CODE,
  13.         GAD_TOP,GAD_UP,GAD_DOWN,GAD_END,
  14.         GAD_NEW,GAD_REMOVE,GAD_CLEAR,
  15.         GAD_LOAD,GAD_SAVE,GAD_USE
  16.     };
  17.  
  18. VOID
  19. FastMacroPanel()
  20. {
  21.     struct LayoutHandle *Handle;
  22.  
  23.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  24.         LH_LocaleHook,    &LocaleHook,
  25.     TAG_DONE))
  26.     {
  27.         struct Window    *FastWindow;
  28.         struct IBox     Bounds;
  29.  
  30.         LT_New(Handle,
  31.             LA_Type,    VERTICAL_KIND,
  32.         TAG_DONE);
  33.         {
  34.             LT_New(Handle,
  35.                 LA_Type,    VERTICAL_KIND,
  36.                 LA_LabelID,    MSG_V36_0037,
  37.             TAG_DONE);
  38.             {
  39.                 LT_New(Handle,
  40.                     LA_Type,    LISTVIEW_KIND,
  41.                     LA_LabelID,    MSG_FASTMACROPANEL_MACRO_LIST_GAD,
  42.                     LA_LabelPlace,    PLACE_LEFT,
  43.                     LA_Chars,    30,
  44.                     LA_Lines,    10,
  45.                     LA_ID,        GAD_LIST,
  46.                     LALV_CursorKey,    TRUE,
  47.                     LALV_MaxGrowY,    20,
  48.                     LALV_MaxGrowX,    50,
  49.                     GTLV_Labels,    &FastMacroList,
  50.  
  51.                     Kick30 ? LALV_Link : TAG_IGNORE, NIL_LINK,
  52.                 TAG_DONE);
  53.  
  54.                 LT_New(Handle,
  55.                     LA_Type,    STRING_KIND,
  56.                     LA_LabelID,    MSG_FASTMACROPANEL_MACRO_GAD,
  57.                     LA_ID,        GAD_MACRO,
  58.                     GTST_MaxChars,    255,
  59.                     GA_Disabled,    TRUE,
  60.                 TAG_DONE);
  61.  
  62.                 LT_New(Handle,
  63.                     LA_Type,    STRING_KIND,
  64.                     LA_LabelID,    MSG_FASTMACROPANEL_MACRO_TEXT_GAD,
  65.                     LA_ID,        GAD_CODE,
  66.                     GTST_MaxChars,    255,
  67.                     GA_Disabled,    TRUE,
  68.                 TAG_DONE);
  69.  
  70.                 LT_EndGroup(Handle);
  71.             }
  72.  
  73.             LT_New(Handle,
  74.                 LA_Type,    HORIZONTAL_KIND,
  75.             TAG_DONE);
  76.             {
  77.                 LT_New(Handle,
  78.                     LA_Type,    HORIZONTAL_KIND,
  79.                     LA_LabelID,    MSG_V36_0038,
  80.                     LA_Spread,    TRUE,
  81.                     LA_SameSize,    TRUE,
  82.                 TAG_DONE);
  83.                 {
  84.                     LT_New(Handle,
  85.                         LA_Type,    BUTTON_KIND,
  86.                         LA_LabelText,    "|<",
  87.                         LA_ID,        GAD_TOP,
  88.                         LA_NoKey,    TRUE,
  89.                         GA_Disabled,    TRUE,
  90.                     TAG_DONE);
  91.  
  92.                     LT_New(Handle,
  93.                         LA_Type,    BUTTON_KIND,
  94.                         LA_LabelText,    "<",
  95.                         LA_ID,        GAD_UP,
  96.                         LA_NoKey,    TRUE,
  97.                         GA_Disabled,    TRUE,
  98.                     TAG_DONE);
  99.  
  100.                     LT_New(Handle,
  101.                         LA_Type,    BUTTON_KIND,
  102.                         LA_LabelText,    ">",
  103.                         LA_ID,        GAD_DOWN,
  104.                         LA_NoKey,    TRUE,
  105.                         GA_Disabled,    TRUE,
  106.                     TAG_DONE);
  107.  
  108.                     LT_New(Handle,
  109.                         LA_Type,    BUTTON_KIND,
  110.                         LA_LabelText,    ">|",
  111.                         LA_ID,        GAD_END,
  112.                         LA_NoKey,    TRUE,
  113.                         GA_Disabled,    TRUE,
  114.                     TAG_DONE);
  115.  
  116.                     LT_EndGroup(Handle);
  117.                 }
  118.  
  119.                 LT_New(Handle,
  120.                     LA_Type,    HORIZONTAL_KIND,
  121.                     LA_LabelID,    MSG_V36_0043,
  122.                     LA_Spread,    TRUE,
  123.                     LA_SameSize,    TRUE,
  124.                 TAG_DONE);
  125.                 {
  126.                     LT_New(Handle,
  127.                         LA_Type,    BUTTON_KIND,
  128.                         LA_LabelID,    MSG_FASTMACROPANEL_NEW_GAD,
  129.                         LA_ID,        GAD_NEW,
  130.                     TAG_DONE);
  131.  
  132.                     LT_New(Handle,
  133.                         LA_Type,    BUTTON_KIND,
  134.                         LA_LabelID,    MSG_GLOBAL_REMOVE_GAD,
  135.                         LA_ID,        GAD_REMOVE,
  136.                         GA_Disabled,    TRUE,
  137.                     TAG_DONE);
  138.  
  139.                     LT_New(Handle,
  140.                         LA_Type,    BUTTON_KIND,
  141.                         LA_LabelID,    MSG_UPLOADQUEUE_CLEAR_TXT,
  142.                         LA_ID,        GAD_CLEAR,
  143.                         GA_Disabled,    FastMacroList . lh_Head -> ln_Succ == NULL,
  144.                     TAG_DONE);
  145.  
  146.                     LT_EndGroup(Handle);
  147.                 }
  148.  
  149.                 LT_EndGroup(Handle);
  150.             }
  151.  
  152.             LT_New(Handle,
  153.                 LA_Type,    VERTICAL_KIND,
  154.             TAG_DONE);
  155.             {
  156.                 LT_New(Handle,LA_Type,XBAR_KIND,LAXB_FullSize,TRUE,TAG_DONE);
  157.  
  158.                 LT_EndGroup(Handle);
  159.             }
  160.  
  161.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  162.                 LAGR_SameSize,    TRUE,
  163.                 LAGR_Spread,    TRUE,
  164.                 LA_ExtraSpace,    TRUE,
  165.             TAG_DONE);
  166.             {
  167.                 LT_New(Handle,
  168.                     LA_Type,    BUTTON_KIND,
  169.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  170.                     LA_ID,        GAD_USE,
  171.                     LABT_ReturnKey,    TRUE,
  172.                     LABT_ExtraFat,    TRUE,
  173.                 TAG_DONE);
  174.  
  175.                 LT_New(Handle,
  176.                     LA_Type,    BUTTON_KIND,
  177.                     LA_LabelID,    MSG_GLOBAL_LOAD_GAD,
  178.                     LA_ID,        GAD_LOAD,
  179.                     LABT_ExtraFat,    TRUE,
  180.                 TAG_DONE);
  181.  
  182.                 LT_New(Handle,
  183.                     LA_Type,    BUTTON_KIND,
  184.                     LA_LabelID,    MSG_GLOBAL_SAVE_GAD,
  185.                     LA_ID,        GAD_SAVE,
  186.                     LABT_ExtraFat,    TRUE,
  187.                     GA_Disabled,    FastMacroList . lh_Head -> ln_Succ == NULL,
  188.                 TAG_DONE);
  189.  
  190.                 LT_EndGroup(Handle);
  191.             }
  192.  
  193.             LT_EndGroup(Handle);
  194.         }
  195.  
  196.         if(Screen)
  197.         {
  198.             Bounds . Left    = Window -> LeftEdge;
  199.             Bounds . Top    = Window -> TopEdge;
  200.             Bounds . Width    = Window -> Width;
  201.             Bounds . Height    = Window -> Height;
  202.         }
  203.  
  204.         if(FastWindow = LT_Layout(Handle,LocaleString(MSG_FASTMACROPANEL_FAST_MACRO_PREFERENCES_TXT),Screen ? &Bounds : NULL,0,0,IDCMP_CLOSEWINDOW,0,
  205.             LAWN_HelpHook,        &GuideHook,
  206.             WA_DepthGadget,        TRUE,
  207.             WA_CloseGadget,        TRUE,
  208.             WA_DragBar,        TRUE,
  209.             WA_RMBTrap,        TRUE,
  210.             WA_Activate,        TRUE,
  211.         TAG_DONE))
  212.         {
  213.             struct IntuiMessage    *Message;
  214.             BOOLEAN             Done = FALSE;
  215.             ULONG             MsgClass,
  216.                          MsgQualifier;
  217.             UWORD             MsgCode;
  218.             struct Gadget        *MsgGadget;
  219.  
  220.             struct MacroNode    *Node,*Selected = NULL;
  221.             ULONG             Offset = 0;
  222.  
  223.             UBYTE              DummyBuffer[MAX_FILENAME_LENGTH],
  224.                         *DummyChar;
  225.             struct FileRequester    *FileRequest;
  226.  
  227.             GuideContext(CONTEXT_FASTMACROS);
  228.  
  229.             PushWindow(FastWindow);
  230.  
  231.             do
  232.             {
  233.                 if(Wait(PORTMASK(FastWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  234.                     break;
  235.  
  236.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(FastWindow -> UserPort))
  237.                 {
  238.                     MsgClass    = Message -> Class;
  239.                     MsgQualifier    = Message -> Qualifier;
  240.                     MsgCode        = Message -> Code;
  241.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  242.  
  243.                     GT_ReplyIMsg(Message);
  244.  
  245.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  246.  
  247.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  248.                         Done = TRUE;
  249.  
  250.                     if(MsgClass == IDCMP_GADGETUP)
  251.                     {
  252.                         switch(MsgGadget -> GadgetID)
  253.                         {
  254.                             case GAD_USE:
  255.  
  256.                                 Done = TRUE;
  257.                                 break;
  258.  
  259.                             case GAD_TOP:
  260.  
  261.                                 LT_SetAttributes(Handle,GAD_LIST,
  262.                                     GTLV_Labels,    ~0,
  263.                                 TAG_DONE);
  264.  
  265.                                 Remove((struct Node *)Selected);
  266.  
  267.                                 AddHead(&FastMacroList,(struct Node *)Selected);
  268.  
  269.                                 RefreshFastWindow(TRUE);
  270.  
  271.                                 Offset = 0;
  272.  
  273.                                 LT_SetAttributes(Handle,GAD_LIST,
  274.                                     GTLV_Labels,    &FastMacroList,
  275.                                     GTLV_Selected,    Offset,
  276.                                     GTLV_Top,    Offset,
  277.                                 TAG_DONE);
  278.  
  279.                                 LT_SetAttributes(Handle,GAD_TOP,
  280.                                     GA_Disabled,    TRUE,
  281.                                 TAG_DONE);
  282.  
  283.                                 LT_SetAttributes(Handle,GAD_UP,
  284.                                     GA_Disabled,    TRUE,
  285.                                 TAG_DONE);
  286.  
  287.                                 LT_SetAttributes(Handle,GAD_DOWN,
  288.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  289.                                 TAG_DONE);
  290.  
  291.                                 LT_SetAttributes(Handle,GAD_END,
  292.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  293.                                 TAG_DONE);
  294.  
  295.                                 FastMacrosChanged = TRUE;
  296.                                 break;
  297.  
  298.                             case GAD_UP:
  299.  
  300.                                 LT_SetAttributes(Handle,GAD_LIST,
  301.                                     GTLV_Labels,    ~0,
  302.                                 TAG_DONE);
  303.  
  304.                                 Node = Selected -> mn_Pred -> mn_Pred;
  305.  
  306.                                 Remove((struct Node *)Selected);
  307.  
  308.                                 Insert(&FastMacroList,(struct Node *)Selected,(struct Node *)Node);
  309.  
  310.                                 RefreshFastWindow(TRUE);
  311.  
  312.                                 Offset--;
  313.  
  314.                                 LT_SetAttributes(Handle,GAD_LIST,
  315.                                     GTLV_Labels,    &FastMacroList,
  316.                                     GTLV_Selected,    Offset,
  317.                                     GTLV_Top,    Offset,
  318.                                 TAG_DONE);
  319.  
  320.                                 LT_SetAttributes(Handle,GAD_TOP,
  321.                                     GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  322.                                 TAG_DONE);
  323.  
  324.                                 LT_SetAttributes(Handle,GAD_UP,
  325.                                     GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  326.                                 TAG_DONE);
  327.  
  328.                                 LT_SetAttributes(Handle,GAD_DOWN,
  329.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  330.                                 TAG_DONE);
  331.  
  332.                                 LT_SetAttributes(Handle,GAD_END,
  333.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  334.                                 TAG_DONE);
  335.  
  336.                                 FastMacrosChanged = TRUE;
  337.  
  338.                                 break;
  339.  
  340.                             case GAD_DOWN:
  341.  
  342.                                 LT_SetAttributes(Handle,GAD_LIST,
  343.                                     GTLV_Labels,    ~0,
  344.                                 TAG_DONE);
  345.  
  346.                                 Node = Selected -> mn_Succ;
  347.  
  348.                                 Remove((struct Node *)Selected);
  349.  
  350.                                 Insert(&FastMacroList,(struct Node *)Selected,(struct Node *)Node);
  351.  
  352.                                 RefreshFastWindow(TRUE);
  353.  
  354.                                 Offset++;
  355.  
  356.                                 LT_SetAttributes(Handle,GAD_LIST,
  357.                                     GTLV_Labels,    &FastMacroList,
  358.                                     GTLV_Selected,    Offset,
  359.                                     GTLV_Top,    Offset,
  360.                                 TAG_DONE);
  361.  
  362.                                 LT_SetAttributes(Handle,GAD_TOP,
  363.                                     GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  364.                                 TAG_DONE);
  365.  
  366.                                 LT_SetAttributes(Handle,GAD_UP,
  367.                                     GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  368.                                 TAG_DONE);
  369.  
  370.                                 LT_SetAttributes(Handle,GAD_DOWN,
  371.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  372.                                 TAG_DONE);
  373.  
  374.                                 LT_SetAttributes(Handle,GAD_END,
  375.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  376.                                 TAG_DONE);
  377.  
  378.                                 FastMacrosChanged = TRUE;
  379.  
  380.                                 break;
  381.  
  382.                             case GAD_END:
  383.  
  384.                                 LT_SetAttributes(Handle,GAD_LIST,
  385.                                     GTLV_Labels,    ~0,
  386.                                 TAG_DONE);
  387.  
  388.                                 Remove((struct Node *)Selected);
  389.  
  390.                                 AddTail(&FastMacroList,(struct Node *)Selected);
  391.  
  392.                                 RefreshFastWindow(TRUE);
  393.  
  394.                                 Offset = FastMacroCount - 1;
  395.  
  396.                                 LT_SetAttributes(Handle,GAD_LIST,
  397.                                     GTLV_Labels,    &FastMacroList,
  398.                                     GTLV_Selected,    Offset,
  399.                                     GTLV_Top,    Offset,
  400.                                 TAG_DONE);
  401.  
  402.                                 LT_SetAttributes(Handle,GAD_TOP,
  403.                                     GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  404.                                 TAG_DONE);
  405.  
  406.                                 LT_SetAttributes(Handle,GAD_UP,
  407.                                     GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  408.                                 TAG_DONE);
  409.  
  410.                                 LT_SetAttributes(Handle,GAD_DOWN,
  411.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  412.                                 TAG_DONE);
  413.  
  414.                                 LT_SetAttributes(Handle,GAD_END,
  415.                                     GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  416.                                 TAG_DONE);
  417.  
  418.                                 FastMacrosChanged = TRUE;
  419.  
  420.                                 break;
  421.  
  422.                             case GAD_NEW:
  423.  
  424.                                 if(Node = NewFastMacro(LocaleString(MSG_FASTMACROPANEL_UNNAMED_TXT),""))
  425.                                 {
  426.                                     LT_SetAttributes(Handle,GAD_LIST,
  427.                                         GTLV_Labels,    ~0,
  428.                                     TAG_DONE);
  429.  
  430.                                     AddTail(&FastMacroList,(struct Node *)Node);
  431.  
  432.                                     RefreshFastWindow(TRUE);
  433.  
  434.                                     LT_SetAttributes(Handle,GAD_LIST,
  435.                                         GTLV_Labels,    &FastMacroList,
  436.                                         GTLV_Selected,    FastMacroCount++,
  437.                                     TAG_DONE);
  438.  
  439.                                     LT_SetAttributes(Handle,GAD_CODE,
  440.                                         GTST_String,    "",
  441.                                         GA_Disabled,    FALSE,
  442.                                     TAG_DONE);
  443.  
  444.                                     LT_SetAttributes(Handle,GAD_MACRO,
  445.                                         GTST_String,    Node -> mn_Macro,
  446.                                         GA_Disabled,    FALSE,
  447.                                     TAG_DONE);
  448.  
  449.                                     LT_SetAttributes(Handle,GAD_REMOVE,
  450.                                         GA_Disabled,    FALSE,
  451.                                     TAG_DONE);
  452.  
  453.                                     LT_SetAttributes(Handle,GAD_SAVE,
  454.                                         GA_Disabled,    FALSE,
  455.                                     TAG_DONE);
  456.  
  457.                                     LT_SetAttributes(Handle,GAD_CLEAR,
  458.                                         GA_Disabled,    FALSE,
  459.                                     TAG_DONE);
  460.  
  461.                                     Selected = Node;
  462.  
  463.                                     Offset = MsgCode;
  464.  
  465.                                     LT_SetAttributes(Handle,GAD_TOP,
  466.                                         GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  467.                                     TAG_DONE);
  468.  
  469.                                     LT_SetAttributes(Handle,GAD_UP,
  470.                                         GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  471.                                     TAG_DONE);
  472.  
  473.                                     LT_SetAttributes(Handle,GAD_DOWN,
  474.                                         GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  475.                                     TAG_DONE);
  476.  
  477.                                     LT_SetAttributes(Handle,GAD_END,
  478.                                         GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  479.                                     TAG_DONE);
  480.  
  481.                                     LT_Activate(Handle,GAD_MACRO);
  482.  
  483.                                     FastMacrosChanged = TRUE;
  484.                                 }
  485.                                 else
  486.                                     DisplayBeep(FastWindow -> WScreen);
  487.  
  488.                                 break;
  489.  
  490.                             case GAD_CLEAR:
  491.  
  492.                                 LT_SetAttributes(Handle,GAD_LIST,
  493.                                     GTLV_Labels,    ~0,
  494.                                 TAG_DONE);
  495.  
  496.                                 FreeList(&FastMacroList);
  497.  
  498.                                 RefreshFastWindow(TRUE);
  499.  
  500.                                 FastMacroCount = 0;
  501.                                 
  502.                                 LT_SetAttributes(Handle,GAD_LIST,
  503.                                     GTLV_Labels,    &FastMacroList,
  504.                                     GTLV_Selected,    ~0,
  505.                                 TAG_DONE);
  506.  
  507.                                 Selected = NULL;
  508.  
  509.                                 LT_SetAttributes(Handle,GAD_TOP,
  510.                                     GA_Disabled,    TRUE,
  511.                                 TAG_DONE);
  512.  
  513.                                 LT_SetAttributes(Handle,GAD_UP,
  514.                                     GA_Disabled,    TRUE,
  515.                                 TAG_DONE);
  516.  
  517.                                 LT_SetAttributes(Handle,GAD_DOWN,
  518.                                     GA_Disabled,    TRUE,
  519.                                 TAG_DONE);
  520.  
  521.                                 LT_SetAttributes(Handle,GAD_END,
  522.                                     GA_Disabled,    TRUE,
  523.                                 TAG_DONE);
  524.  
  525.                                 LT_SetAttributes(Handle,GAD_REMOVE,
  526.                                     GA_Disabled,    TRUE,
  527.                                 TAG_DONE);
  528.  
  529.                                 LT_SetAttributes(Handle,GAD_MACRO,
  530.                                     GTST_String,    "",
  531.                                     GA_Disabled,    TRUE,
  532.                                 TAG_DONE);
  533.  
  534.                                 LT_SetAttributes(Handle,GAD_CODE,
  535.                                     GTST_String,    "",
  536.                                     GA_Disabled,    TRUE,
  537.                                 TAG_DONE);
  538.  
  539.                                 LT_SetAttributes(Handle,GAD_SAVE,
  540.                                     GA_Disabled,    TRUE,
  541.                                 TAG_DONE);
  542.  
  543.                                 LT_SetAttributes(Handle,GAD_CLEAR,
  544.                                     GA_Disabled,    TRUE,
  545.                                 TAG_DONE);
  546.  
  547.                                 FastMacrosChanged = FALSE;
  548.  
  549.                                 break;
  550.  
  551.                             case GAD_REMOVE:
  552.  
  553.                                 if(Selected)
  554.                                 {
  555.                                     LT_SetAttributes(Handle,GAD_LIST,
  556.                                         GTLV_Labels,    ~0,
  557.                                     TAG_DONE);
  558.  
  559.                                     if(--FastMacroCount)
  560.                                     {
  561.                                         if(Selected -> mn_Succ -> mn_Succ)
  562.                                             Node = Selected -> mn_Succ;
  563.                                         else
  564.                                         {
  565.                                             Node = Selected -> mn_Pred;
  566.  
  567.                                             Offset = 0;
  568.                                         }
  569.                                     }
  570.  
  571.                                     FreeNode((struct Node *)Selected);
  572.  
  573.                                     RefreshFastWindow(TRUE);
  574.  
  575.                                     LT_SetAttributes(Handle,GAD_LIST,
  576.                                         GTLV_Labels,    &FastMacroList,
  577.                                         GTLV_Selected,    Node -> mn_Succ ? GetNodeOffset((struct Node *)Node,&FastMacroList) : ~0,
  578.                                     TAG_DONE);
  579.  
  580.                                     if(!FastMacroCount)
  581.                                     {
  582.                                         Selected = NULL;
  583.  
  584.                                         LT_SetAttributes(Handle,GAD_TOP,
  585.                                             GA_Disabled,    TRUE,
  586.                                         TAG_DONE);
  587.  
  588.                                         LT_SetAttributes(Handle,GAD_UP,
  589.                                             GA_Disabled,    TRUE,
  590.                                         TAG_DONE);
  591.  
  592.                                         LT_SetAttributes(Handle,GAD_DOWN,
  593.                                             GA_Disabled,    TRUE,
  594.                                         TAG_DONE);
  595.  
  596.                                         LT_SetAttributes(Handle,GAD_END,
  597.                                             GA_Disabled,    TRUE,
  598.                                         TAG_DONE);
  599.  
  600.                                         LT_SetAttributes(Handle,GAD_REMOVE,
  601.                                             GA_Disabled,    TRUE,
  602.                                         TAG_DONE);
  603.  
  604.                                         LT_SetAttributes(Handle,GAD_MACRO,
  605.                                             GTST_String,    "",
  606.                                             GA_Disabled,    TRUE,
  607.                                         TAG_DONE);
  608.  
  609.                                         LT_SetAttributes(Handle,GAD_CODE,
  610.                                             GTST_String,    "",
  611.                                             GA_Disabled,    TRUE,
  612.                                         TAG_DONE);
  613.  
  614.                                         LT_SetAttributes(Handle,GAD_SAVE,
  615.                                             GA_Disabled,    TRUE,
  616.                                         TAG_DONE);
  617.  
  618.                                         LT_SetAttributes(Handle,GAD_CLEAR,
  619.                                             GA_Disabled,    TRUE,
  620.                                         TAG_DONE);
  621.                                     }
  622.                                     else
  623.                                     {
  624.                                         Selected = Node;
  625.  
  626.                                         LT_SetAttributes(Handle,GAD_CODE,
  627.                                             GTST_String,    Selected -> mn_Code,
  628.                                         TAG_DONE);
  629.  
  630.                                         LT_SetAttributes(Handle,GAD_MACRO,
  631.                                             GTST_String,    Selected -> mn_Macro,
  632.                                         TAG_DONE);
  633.  
  634.                                         LT_SetAttributes(Handle,GAD_TOP,
  635.                                             GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  636.                                         TAG_DONE);
  637.  
  638.                                         LT_SetAttributes(Handle,GAD_UP,
  639.                                             GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  640.                                         TAG_DONE);
  641.  
  642.                                         LT_SetAttributes(Handle,GAD_DOWN,
  643.                                             GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  644.                                         TAG_DONE);
  645.  
  646.                                         LT_SetAttributes(Handle,GAD_END,
  647.                                             GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  648.                                         TAG_DONE);
  649.                                     }
  650.  
  651.                                     FastMacrosChanged = TRUE;
  652.                                 }
  653.  
  654.                                 break;
  655.  
  656.                             case GAD_LIST:
  657.  
  658.                                 if(Selected = (struct MacroNode *)GetListNode(MsgCode,&FastMacroList))
  659.                                 {
  660.                                     Offset = MsgCode;
  661.  
  662.                                     LT_SetAttributes(Handle,GAD_MACRO,
  663.                                         GTST_String,    Selected -> mn_Macro,
  664.                                         GA_Disabled,    FALSE,
  665.                                     TAG_DONE);
  666.  
  667.                                     LT_SetAttributes(Handle,GAD_CODE,
  668.                                         GTST_String,    Selected -> mn_Code,
  669.                                         GA_Disabled,    FALSE,
  670.                                     TAG_DONE);
  671.  
  672.                                     LT_SetAttributes(Handle,GAD_REMOVE,
  673.                                         GA_Disabled,    FALSE,
  674.                                     TAG_DONE);
  675.  
  676.                                     LT_SetAttributes(Handle,GAD_TOP,
  677.                                         GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  678.                                     TAG_DONE);
  679.  
  680.                                     LT_SetAttributes(Handle,GAD_UP,
  681.                                         GA_Disabled,    !Selected -> mn_Pred -> mn_Pred,
  682.                                     TAG_DONE);
  683.  
  684.                                     LT_SetAttributes(Handle,GAD_DOWN,
  685.                                         GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  686.                                     TAG_DONE);
  687.  
  688.                                     LT_SetAttributes(Handle,GAD_END,
  689.                                         GA_Disabled,    !Selected -> mn_Succ -> mn_Succ,
  690.                                     TAG_DONE);
  691.                                 }
  692.  
  693.                                 break;
  694.  
  695.                             case GAD_MACRO:
  696.  
  697.                                 if(Selected)
  698.                                 {
  699.                                     LT_SetAttributes(Handle,GAD_LIST,
  700.                                         GTLV_Labels,    ~0,
  701.                                     TAG_DONE);
  702.  
  703.                                     strcpy(Selected -> mn_Macro,(STRPTR)LT_GetAttributes(Handle,GAD_MACRO,TAG_DONE));
  704.  
  705.                                     RefreshFastWindow(TRUE);
  706.  
  707.                                     LT_SetAttributes(Handle,GAD_LIST,
  708.                                         GTLV_Labels,    &FastMacroList,
  709.                                         GTLV_Selected,    GetNodeOffset((struct Node *)Selected,&FastMacroList),
  710.                                     TAG_DONE);
  711.  
  712.                                     LT_SetAttributes(Handle,GAD_CODE,
  713.                                         GTST_String,    Selected -> mn_Code,
  714.                                     TAG_DONE);
  715.  
  716.                                     FastMacrosChanged = TRUE;
  717.  
  718.                                     LT_Activate(Handle,GAD_CODE);
  719.                                 }
  720.  
  721.                                 break;
  722.  
  723.                             case GAD_CODE:
  724.  
  725.                                 if(Selected)
  726.                                 {
  727.                                     strcpy(Selected -> mn_Code,(STRPTR)LT_GetAttributes(Handle,GAD_CODE,TAG_DONE));
  728.  
  729.                                     FastMacrosChanged = TRUE;
  730.                                 }
  731.  
  732.                                 break;
  733.  
  734.                             case GAD_LOAD:
  735.  
  736.                                 SplitFileName(LastFastMacros,&DummyChar,DummyBuffer);
  737.  
  738.                                 LT_LockWindow(FastWindow);
  739.  
  740.                                 if(FileRequest = GetFile(FastWindow,LocaleString(MSG_FASTMACROPANEL_LOAD_FAST_MACRO_SETTINGS_TXT),DummyBuffer,FilePart(LastFastMacros),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_LOAD_TXT),TRUE))
  741.                                 {
  742.                                     LT_SetAttributes(Handle,GAD_LIST,
  743.                                         GTLV_Labels,    ~0,
  744.                                     TAG_DONE);
  745.  
  746.                                     Selected = NULL;
  747.  
  748.                                     if(!LoadFastMacros(DummyBuffer))
  749.                                         ShowError(FastWindow,ERR_LOAD_ERROR,IoErr(),DummyBuffer);
  750.                                     else
  751.                                     {
  752.                                         strcpy(Config -> FileConfig -> FastMacroFileName,DummyBuffer);
  753.  
  754.                                         strcpy(LastFastMacros,DummyBuffer);
  755.  
  756.                                         FastMacrosChanged = FALSE;
  757.                                     }
  758.  
  759.                                     LT_SetAttributes(Handle,GAD_LIST,
  760.                                         GTLV_Labels,    &FastMacroList,
  761.                                     TAG_DONE);
  762.  
  763.                                     LT_SetAttributes(Handle,GAD_CODE,
  764.                                         GTST_String,    "",
  765.                                         GA_Disabled,    TRUE,
  766.                                     TAG_DONE);
  767.  
  768.                                     LT_SetAttributes(Handle,GAD_MACRO,
  769.                                         GTST_String,    "",
  770.                                         GA_Disabled,    TRUE,
  771.                                     TAG_DONE);
  772.  
  773.                                     LT_SetAttributes(Handle,GAD_REMOVE,
  774.                                         GA_Disabled,    TRUE,
  775.                                     TAG_DONE);
  776.  
  777.                                     LT_SetAttributes(Handle,GAD_TOP,
  778.                                         GA_Disabled,    TRUE,
  779.                                     TAG_DONE);
  780.  
  781.                                     LT_SetAttributes(Handle,GAD_UP,
  782.                                         GA_Disabled,    TRUE,
  783.                                     TAG_DONE);
  784.  
  785.                                     LT_SetAttributes(Handle,GAD_DOWN,
  786.                                         GA_Disabled,    TRUE,
  787.                                     TAG_DONE);
  788.  
  789.                                     LT_SetAttributes(Handle,GAD_END,
  790.                                         GA_Disabled,    TRUE,
  791.                                     TAG_DONE);
  792.  
  793.                                     LT_SetAttributes(Handle,GAD_SAVE,
  794.                                         GA_Disabled,    !FastMacroCount,
  795.                                     TAG_DONE);
  796.  
  797.                                     LT_SetAttributes(Handle,GAD_CLEAR,
  798.                                         GA_Disabled,    !FastMacroCount,
  799.                                     TAG_DONE);
  800.  
  801.                                     RefreshFastWindow(TRUE);
  802.  
  803.                                     FreeAslRequest(FileRequest);
  804.                                 }
  805.  
  806.                                 LT_UnlockWindow(FastWindow);
  807.  
  808.                                 break;
  809.  
  810.                             case GAD_SAVE:
  811.  
  812.                                 SplitFileName(LastFastMacros,&DummyChar,DummyBuffer);
  813.  
  814.                                 LT_LockWindow(FastWindow);
  815.  
  816.                                 if(FileRequest = GetFile(FastWindow,LocaleString(MSG_FASTMACROPANEL_SAVE_FAST_MACRO_SETTINGS_TXT),DummyBuffer,FilePart(LastFastMacros),DummyBuffer,"#?.prefs",TRUE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SAVE_TXT),TRUE))
  817.                                 {
  818.                                     if(!SaveFastMacros(DummyBuffer))
  819.                                         ShowError(FastWindow,ERR_SAVE_ERROR,IoErr(),DummyBuffer);
  820.                                     else
  821.                                     {
  822.                                         strcpy(LastFastMacros,DummyBuffer);
  823.  
  824.                                         FastMacrosChanged = FALSE;
  825.                                     }
  826.  
  827.                                     FreeAslRequest(FileRequest);
  828.                                 }
  829.  
  830.                                 LT_UnlockWindow(FastWindow);
  831.  
  832.                                 break;
  833.                         }
  834.                     }
  835.                 }
  836.             }
  837.             while(!Done);
  838.  
  839.             PopWindow();
  840.         }
  841.  
  842.         LT_DeleteHandle(Handle);
  843.     }
  844. }
  845.